
Particles that follow a selected object is a common effect within many
particle animations. As such, thinkingParticles offers some advanced functions
within the Follow Node Operator to make particles follow
an object. Make sure that you try out the various options before you think
that you can't achieve a certain effect. Many features may surprise you!
ON - (Bool) This input data
stream determines whether the operator is considered 'on' or 'off'. You
can connect other operators to this input channel such as a Bool
Helper to activate/deactivate the whole operator.
Time - (Time) This input data stream is used to define the local
time for the operator when the user wants to override the default system
time.
Particle - (Particle) This input data stream reads in the currently
selected particle group that is to be used to follow. The data stream
MUST be connected and will be highlighted yellow if it
is not.
Node - (Node) This input data stream is used to give the selected
Follow Node object the particles are to try and follow. The data stream
MUST be connected and will be highlighted yellow if it
is not.
Type - (Integer) This input data stream takes an integer value
that represents the Type of Follow algorithm the particles will use. Valid
input values are 0 through 1, where:
Speed1 - (Scalar) This input
data stream is used to override the Type 1 Speed spinner value.
Speed1 PositionDependence - (Scalar) This input data stream is
used to override the Type 1 Position Dep. spinner value.
Speed1 PLifeGradient - (Alpha Gradient) This input data stream
is used to override the Type 1 PLife Dep. spinner value.
Catch1 - (Scalar) This input data stream is used to override the
Type 1 Catch spinner value.
Catch1 PositionDependence - (Scalar) This input data stream is
used to override the Type 1 Catch / Position Dep. spinner value.
Speed2 - (Scalar) This input data stream is used to override the
Type 2 Speed spinner value.
Speed2 Variation - (Scalar) This input data stream is used to
override the Type 2 Variation [%] spinner value.
Speed2 PositionDependence - (Scalar) This input data stream is
used to override the Type 2 Position Dep. spinner value.
Catch2 - (Scalar) This input data stream is used to override the
Type 2 Catch spinner value.
Catch2 Variation - (Scalar) This input data stream is used to
override the Type 2 Catch / Variation [%] spinner value.
Catch2 PositionDependence - (Scalar) This input data stream is
used to override the Type 2 Catch / Position Dep. spinner value.
Start Time - (Frame) This input data stream is used to override
the Type 2 Start Time spinner value.
Start Variation - (Frame) This input data stream is used to override
the Type 2 Random Start spinner value.
Position Scale - (Scalar) This input data stream is used to override
the Type 2 Position Scale spinner value.
Position - (Integer) This input data stream takes an integer value
that represents the Type of Position calculation the particles will use.
Valid input values are 0 through 1, where:
Follow At Time - (Bool)
This input data stream is used to override the Follow At Time checkbox
state.
Node Rotation - (Bool) This input data stream is used to override
the Node Rotation checkbox state.
Node Alignment - (Bool) This input data stream is used to override
the Node Alignment checkbox state.
Follow Type - (Integer) This input data stream takes an integer
value that represents the Type of particle follow path the particles will
use. Valid input values are 0 through 2, where:
No Operator Outputs.
thinkingParticles offers two types of follow features.
Type 1: This method is the easiest of the Follow Node options
and has only a handful of parameters for you to set. But don't THINK that
this option isn't worth looking at. Be prepared to learn something really
advanced.
Type 2: In contrast to Type 1, this Follow Node option offers
many more options and parameters for you to set. By default, Type 2 makes
the particles follow relative to the follow object position. In other
words, all particles keep their relative distances to the follow object.
This behavior may be changed at a later stage as well.

Speed - This spinner value acts as a multiplier for
the particle speed. A value of 1.0 makes the particles as fast as the
selected Follow Node object (any 3ds Max object), while
a value of 0.5 makes the particles half as fast as the selected Follow
Node moves. Values greater than 1.0 will accelerate the particles beyond
the speed of the selected Follow Node which means that they eventually
pass the follow object and reach the end of the animation before the follow
object reaches it.
Position Dep. - By default, all particles following the selected
node get the exact same speed based on the Speed value described above.
In the real world however, having all particles moving with the exact
same speed looks unnatural. Imagine a flock of birds, for example. If
they were to move in absolute synchrony or change direction at the exact
same time, the illusion of reality would be destroyed.
Thus, the Position Dependency spinner lets you control how the follow speed
is assigned to the various particles. A value of 0.0 turns off the position
dependency for the particle speed and all of the particles inherit the
exact same speed. Higher values take into account the proximity of the
particle to the selected Follow Node in order to determine how much of
the particle speed to apply. In general, particles farther away from the
selected Follow Node receive less of the follow speed and particles that
are closer to the Follow Node receive more of the follow speed.
PLife Dep. - In addition to Positional dependency, thinkingParticles
offers speed dependency based on the life time of the particles. This
lifetime dependency is handled through a grayscale gradient, as shown
below.

The leftmost edge of the gradient represents the point at which the particle
is born, while the rightmost edge represents the point at which a particle
dies. White values indicated within the gradient represent full speed,
while black indicates no speed at all.
Now, why would someone want this type of control? It lets you easily simulate
a loss of particles over time. As long as the particles have a certain
age they will follow perfectly, but as they get older they stop following
(or even move away from) the selected Follow Node object. A crop duster
spraying pesticide over a field of corn is a good example of this kind
of effect. The pesticide leaving the plane will briefly have the same
speed as the plane, but because of air friction, wind or whatever, the
spray comes to a stop on top of the field and just rains down in the right
place.
Catch - One of the ideas behind a follow function is to make particles
catch an object that moves around. The Catch spinner controls the amount
of tension the particles should have when following the object. A value
of 1.0 makes the particles stick to their follow path (relative to the
object), while values below 1.0 will make the particles loose and stretchy.
Position Dep. - This parameter only affects the Catch value when
Catch is less than 1.0. It will not affect anything else. The functionality
is identical to the Position Dependency of the Speed value, except that
it controls the looseness dependent on the distance to the follow object.
Speed - Identical to the
Type 1 speed spinner, this spinner acts as a multiplier for the particle
speed following an object. A value of 1.0 makes the particles as fast
as the selected Follow Node object (any 3ds Max object),
while a value of 0.5 makes the particles half as fast as the selected
Follow Node moves. Values greater than 1.0 will accelerate the particles
beyond the speed of the selected Follow Node which means that they eventually
pass the follow object and reach the end of the animation before the follow
object reaches it.
Variation [%] - Increase this value to add randomness to the speed
of the particles that follow a selected Follow Node object. If you set
Variation to 100%, every particle will get a random speed value.
Position Dep. - By default, all particles following the selected
node get the exact same speed based on the Speed value described above.
In the real world however, having all particles moving with the exact
same speed looks unnatural. Imagine a flock of birds, for example. If
they were to move in absolute synchrony or change direction at the exact
same time, the illusion of reality would be destroyed.
Thus, the Position Dependency spinner lets you control how the follow speed
is assigned to the various particles. A value of 0.0 turns off the position
dependency for the particle speed and all of the particles inherit the
exact same speed. Higher values take into account the proximity of the
particle to the selected Follow Node in order to determine how much of
the particle speed to apply. In general, particles farther away from the
selected Follow Node receive less of the follow speed and particles that
are closer to the Follow Node receive more of the follow speed.
Catch - One of the ideas behind a follow function is to make particles
catch an object that moves around. The Catch spinner controls the amount
of tension the particles should have when following the object. A value
of 1.0 makes the particles stick to their follow path (relative to the
object), while values below 1.0 will make the particles loose and stretchy.
Variation [%] - Increase this value to add randomness to the Catch
value of the particles that follow a selected Follow Node object. If you
set Variation to 100%, every particle will get a random catch value.
Position Dep. - This parameter only affects the Catch value when
Catch is less than 1.0. It will not affect anything else. The functionality
is identical to the Position Dependency of the Speed value, except that
it controls the looseness dependent on the distance to the follow object.
Start Time - Usually the particles start following an object as
soon as the operator gets a “true” message from on its ON input data stream
port. However, you can also set any start time by adjusting this parameter.
Random Start - By default, all particles follow the selected Follow
Node at the same start time. However, there are situations where you don't
want this to happen, and the Random Start parameter takes care of this.
A value of 0.0 will disable this spinner while values greater than zero
will divide the starting time evenly amongst all particles making them
follow one after another.
Position Scale - This value is only used when the Random
Position radio button below it has been selected. This value
acts as a relative scale factor for the particle positions. From start
to end (animation time) the particle positions will be scaled up to this
percentage.
Object Position - These two radio buttons select the way how particle
positions are treated/calculated by thinkingParticles.
Random Position - These two radio buttons select the way how particle
positions are treated/calculated by thinkingParticles.
Follow At Time checkbox - Activate this checkbox to force the
particles to follow the object based on the time the ON input data stream
was activated and not on the particle animation time. If no data stream
is input into the ON port to start the operator, then activating this
checkbox forces the paricles to follow over the course of the current
animation.
Node Rotation checkbox - Activate this checkbox to force the particles
use the rotation matrix of the selected Follow Node so that when the object
rotates the particles also rotate.
Node Alignment checkbox - Activate this checkbox to align all
particles with the selected Follow Node.
Relative - Select this radio option if you want the particles
to follow the selected Follow Node relative to path that the Follow Node
is taking.
Absolute - Select this radio option if you want the particles
to follow the selected Follow Node absolute to path that the Follow Node
is taking.
Position - Select this radio option if you want the particles
to follow the selected Follow Node based on the position to the path that
the Follow Node is taking (a straight line is the path taken).